#!/usr/bin/env python
# coding=utf-8

import unittest
import time
from others import Element
from utility import base
"""
    1,热启动APP进入中间tab点击顶部我的课程
    2，检查是否进入布克阅读首页
    3，已付费已加群用户点击首页续费按钮
    4，选择付费选项后进行支付
    5，支付成功后返回布克阅读首页
    ps：开始之前查看登录用户刚好是已付费已加群用户
"""

class GradePayTests(base.BaseTests):
    def test_auto_grade_pay(self):
        time.sleep(0.5)
        self.tap_tab_index(2) #进入APP点击底部button从左数第三个
        time.sleep(0.5)
        #
        my_less_tab = self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="我的课程"]')
        self.assertIsNotNone(my_less_tab, u'顶部应该存在一个[我的课程]按钮')
        my_less_tab.click()
        time.sleep(0.25)
        booker_cell = self.driver.find_element_by_xpath(u'//*[@name="布克阅读"]/..')
        self.assertIsNotNone(booker_cell, u'应该存在一个[布克阅读]按钮')
        booker_cell.click()

        time.sleep(1)
        entry_class = self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="进入课程"]')
        self.assertIsNotNone(entry_class, u'应该存在一个[进入课程]按钮')
        print ('断言是否进入 布克阅读首页')


    #进入续费页面
    def test_auto_grage_pay1(self):
        print ('阅读首页')
        time.sleep(1)
        #找到延长课程入口
        course_pay_old = self.driver.find_element_by_xpath(u'//XCUIElementTypeStaticText[@name="延长课程 > "]')
        self.assertIsNotNone(course_pay_old, u'应该有个延长课程入口，没找到')
        course_pay_old.click()
        self.driver.save_screenshot("/Users/fisher/workspace/codes/QA/testimg/oldpay.png")
        print ('进入续费页面')

        #已付费用户点击“延长课程”
        pay_button = self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="确认支付"]')
        self.assertIsNotNone(pay_button, u'应该有个确认支付入口，没找到')
        pay_button.click()

        #点击支付弹出二次确认弹窗
        repeat_buy_pop = self.driver.find_element_by_xpath(u'//XCUIElementTypeApplication[@name="作业盒子小学"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther')
        repeat_buy_pop_sure = self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="确定"]')
        if repeat_buy_pop:
            repeat_buy_pop_sure.click()
            print ('与梦想读书会有重复购买点击确认进入购买页面')


        #进入支付确认页面 点击提醒爸爸妈妈弹窗
    def test_auto_grage_pay2(self):
        tell_mama = self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="说过了，去支付"]')
        if tell_mama:
            tell_mama.click()
            self.driver.save_screenshot("/Users/fisher/workspace/codes/QA/testimg/tellmama.png")
            print ('弹出爸妈确认弹窗 点击确认')
        #断言是否进入支付页面
        pay_sure = self.driver.find_element_by_xpath(u'//XCUIElementTypeStaticText[@name="确认支付"]/..')
        self.assertIsNotNone(pay_sure, u'应该有选择微信或者支付宝选项，没找到')
        pay_sure.click()
        print ('找到支付选项 进入支付页面')
        time.sleep(3)
        #断言是否进入付款页面
        pay_menu = self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="付款"]')
        self.assertIsNotNone(pay_menu, u'应该有付款按钮，没找到')
        pay_menu.click()
        print ('找到付款 点击支付')
        time.sleep(3)

        #判断是否支付成功
    def test_auto_grage_pay3(self):
        pay_success = self.driver.find_element_by_xpath(u'//XCUIElementTypeStaticText[@name="支付成功"]')
        if pay_success:
            print ('支付成功')
            self.driver.find_element_by_xpath(u'//XCUIElementTypeOther[@name="支付成功"]/XCUIElementTypeOther[3]').click()
            wx_teacher_code = self.driver.find_element_by_xpath(u'//XCUIElementTypeStaticText[@name="欢迎加入布克阅读"]')
            self.driver.save_screenshot("/Users/fisher/workspace/codes/QA/testimg/teachercode.png")
            self.assertIsNotNone(wx_teacher_code, u'应该进入老师加群页面，没进去')
            time.sleep(0.5)
            #点击返回上一页面
            self.driver.find_element_by_xpath(u'//XCUIElementTypeButton[@name="graded reading white back@2x"]').click()
            time.sleep(1)
            #点击返回上一页面
            self.driver.tap([(20, 40)], 100)
            time.sleep(1)
            self.driver.save_screenshot("/Users/fisher/workspace/codes/QA/testimg/paypassmaimpage.png")
        print ('回到布克阅读首页')


if __name__ == '__main__':
    test_suite = unittest.TestLoader().loadTestsFromTestCase(GradePayTests)
    unittest.TextTestRunner().run(test_suite)